For commercial applications, a client computing platform typically operates in an environment where its behaviour is vulnerable to modification by local or remote entities. This potential insecurity of the platform is a limitation on its use by local parties who might otherwise be willing to use the platform, or remote parties who might otherwise communicate with the platform; for example, for the purposes of E-commerce.
In the applicant's co-pending disclosure WO 00/48063, incorporated herein by reference, there is disclosed the concept of a ‘trusted computing platform’ comprising a computing platform which has a ‘trusted component’ in the form of a built-in hardware and software component. This document describes the use of a Trusted Device (TD) or Trusted Platform Module (TPM) to enable verification of the integrity of computing apparatus by the reliable measurement and reporting of integrity metrics. A TD/TPM conforms to the Trusted Computing Platform Alliance (TCPA) specification.
A Trusted Device or Trusted Platform Module may include one or more logically protected computing environments or “compartments” within which a service or process may be run. The actions or privileges within a compartment are constrained, particularly to restrict the ability of a process to execute methods and operations which have effect outside the compartment, such as methods that request network access or access to files outside of the compartment. Also, operation of a process or service within a compartment is performed with a high level of isolation from interference and prying by outside influences. The or each compartment may be an operating system compartment controlled by an operating system kernel. This is also referred to as a compartmented operating system or a trusted operating system.
Trusted operating systems have been available for several years in a form designed for handling and processing classified (military) information, using a containment mechanism enforced by a kernel of the operating system with mandatory access controls to resources of the computing platform such as files, processes and network connections. The operating system attaches labels to the resources and enforces a security policy which governs the allowed interaction between these resources based on their label values. Many trusted operating systems apply a security policy based on the Bell-Lapadula model discussed in the paper “Applying Military Grade Security to the Internet” by C I Dalton and J F Griffin published in Computer Networks and ISDN Systems 29 (1997) 1799-1808.
In any event, many trusted computing platforms adopt a relatively simple and convenient form of operating system compartment. As a general rule, each resource of the computing platform which it is desired to protect is given a label indicating the compartment to which that resource belongs. Mandatory access controls, incorporating a security policy, are performed by the kernel of the host operating system to ensure that resources from one compartment cannot interfere with resources from another compartment. In a secure system, access to system resources is defined by security or subject attributes.
The above-mentioned security policy tends to be expressed in the form of security rules (each generally comprising an instruction line defining security attributes). In general, one or more security rules are associated with a compartment, and each compartment may be associated with one or more services.
In the past, it has been considered desirable to load the security rules as early in the startup sequence of a platform as possible, such that relevant security rules are in force as soon as a service or process is started. As such, in prior art systems, all security rules tend to be loaded to the platform at the time of system initialisation, i.e. a complete security policy is loaded at system startup. Thus, security attributes tend to be assigned by security initialisation and cannot be changed except by processes with special authorisation.
In secure operating systems, there is often a need to change the security attributes of programs at certain points (i.e. perform a ‘security transition’), for example, when when a process forks and runs another program, because a service requires a security ID to enter a compartment. Thus, in prior art systems, it has either been necessary to modify the manner in which a service starts (i.e. modify the script, control program or other facility by which the service starts) so as to ensure that it is put in the correct compartment, or some form of mapping function has been configured to handle this issue.
In other words, the changing of security attributes of programs at certain points has, in the past, been done explicitly, using special system calls, or by using trusted gateway programs to change the attributes. This is inconvenient because it involves modifying the calling program (as mentioned above) to include the special system calls or to call the trusted gateway program instead of the required program. It can also involve making it necessary to give the calling program extra security attributes allowing it to change the attributes of called programs.